# Юнит тестирование

В этом задании вам потребуется написать юнит тесты на небольшой модуль, который предоставляет валидацию полей 
передаваемого объекта. Кажется, что в реализации этого модуля где-то закрался обидный баг (и даже не один), возможно 
тесты помогут их найти.

## ТЗ

Итак, первым делом техническое задание для модуля.
Модуль представляет собой класс с 1 единственным методом `.validate(obj)`. Конструктор класса принимает объект условий,
которые будут в дальнейшем применяться к валидируемым объектам. Условия передаются в таком виде:

```js
const validator = new Validator({
  name: {
    type: 'string',
    min: 5,
    max: 10, 
  },
  age: {
    type: 'number',
    min: 18,
    max: 27,
  }
});
```

Суть очень простая — мы заранее указываем какие поля наших будущих объектов проверять и какие условия для проверки 
применять. В данном случае мы подразумеваем что будущие объекты будут иметь поля `name` и `age`. Имя должно быть строкой
минимум 5 символов и максимум 10, а возраст — число, не меньше 18 и не больше 27. Для простоты мы считаем что 
поддерживаются только 2 типа значений: строки и числа. При этом из условий проверки у нас всегда указаны два, `min` и 
`max`.

Метод `.validate(obj)` получает объект, применяет заранее переданные условия к полям объекта и возвращает массив ошибок.
Пример:

```js
const errors = validator.validate({ name: 'La', age: 5 });

// errors = [{field: 'name', error: 'too short, expect 5, got 2'}, {field: 'age', error: 'too small, exect 18, got 5'}]
```

Важный момент — если поле неправильного типа, то другие правила не проверяются, т.е. если мы ожидаем число не меньше 
18, а приходит строка "lala", то ее длина не имеет значения, т.е. вернется лишь одна ошибка для этого поля.

## Тесты

Ваша задача — протестировать модуль `Validator` как следует, а также (если удастся найти баги в нем) исправить его 
реализацию.

Некоторые простые тесты для валидатора уже написаны, в файле `test/Validator.test.js` вы можете их увидеть. Однако они 
не покрывают и половины функциональности. Их наличие поможет вам со структурой тестов, а также позволит быстрее начать 
писать свои.